﻿#pragma once


// CDlgMyAddImport 对话框

class CDlgMyAddImport : public CDialogEx
{
	DECLARE_DYNAMIC(CDlgMyAddImport)

public:
	CDlgMyAddImport(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CDlgMyAddImport();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_DIALOG5 };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
private:
    char** m_pFileData = NULL;       //数据
    TCHAR* m_pFileFullPath;           //文件路径

public:
    void SetFileData(char** pFileData);
    void SetFilePath(TCHAR* pFilePath);

private:
    //增加节
    DWORD AddSection(DWORD dwValue);

    //根据偏移值和对齐值计算对齐后的大小
    DWORD CalcOffset(DWORD dwVal, DWORD dwAlign);

	//计算增加的节需要多大空间
	DWORD AddSectionSize();

	//构造导入表项，并写入文件
	BOOL CreateImportWriteFile(DWORD dwOffset, DWORD dwAddSecSize);

	//根据RVA给出FA
	DWORD RVATOFA(DWORD dwRVA);

	//根据FA给出RVA
	DWORD FATORVA(DWORD dwFA);

	//新数据FA转RVA
	DWORD NEWFATORVA(DWORD dwFA);

public:
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButton2();
	afx_msg void OnBnClickedButton3();
	CEdit m_EdtDllName;
	CEdit m_EdtAPIName;
	CListBox m_LstBoxName;
};
